package slcu.eventos.registros;

import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.MapUtil;
import com.liferay.portal.model.User;

import slcu.equipos.Equipos;
import slcu.eventos.ResultadoValidacion;
import slcu.model.CategoriaDisciplina;
import slcu.model.Equipo;
import slcu.service.CategoriaDisciplinaLocalServiceUtil;
import slcu.service.EquipoLocalServiceUtil;
import slcu.service.PartidoLocalServiceUtil;

public class RegistroEventoIndividual implements RegistroEvento {
	
	private Date fechaPartido;
	private CategoriaDisciplina categoriaDisciplina;
	private String lugar;
	
	private static Log _log = LogFactoryUtil.getLog(Equipos.class);

	public RegistroEventoIndividual(Map<String, String[]> parameters) {
		
		Long categoriaId = MapUtil.getLong(parameters, "categoriaId");
		CategoriaDisciplina categoriaDisciplina;
		try {
			categoriaDisciplina = CategoriaDisciplinaLocalServiceUtil.getCategoriaDisciplina(categoriaId);
		} catch (Exception e1) {
			categoriaDisciplina = null;
			_log.error("Error al obtener la categoria", e1);
		}
		
		Integer anioPartido = MapUtil.getInteger(parameters, "anioPartido");
		Integer mesPartido = MapUtil.getInteger(parameters, "mesPartido");
		Integer diaPartido = MapUtil.getInteger(parameters, "diaPartido");
		
		Integer horaPartido = MapUtil.getInteger(parameters, "horaPartido");
		Integer minutoPartido = MapUtil.getInteger(parameters, "minutoPartido");
				
		String lugar = MapUtil.getString(parameters, "lugar");
		
		Calendar cal = Calendar.getInstance();
		cal.set(anioPartido, mesPartido, diaPartido, horaPartido, minutoPartido, 0);
		Date fechaPartido = cal.getTime();		
		
		this.fechaPartido = fechaPartido;
		this.categoriaDisciplina = categoriaDisciplina;
		this.lugar = lugar;
		
	}
	
	@Override
	public ResultadoValidacion validar() {
		
		ResultadoValidacion resultado = new ResultadoValidacion();

		if (fechaPartido == null) {
			resultado.agregarMensajeError("fecha-no-valida");
			return resultado;
		}
		
		if (categoriaDisciplina == null) {
			resultado.agregarMensajeError("categoria-no-valida");
			return resultado;
		}
		
		if (lugar.isEmpty()) {
			resultado.agregarMensajeError("lugar-no-indicado");
		}
		
		return resultado;
		
	}

	public Date getFechaPartido() {
		return fechaPartido;
	}

	public CategoriaDisciplina getCategoriaDisciplina() {
		return categoriaDisciplina;
	}

	public String getLugar() {
		return lugar;
	}

	@Override
	public void agendar(User createUser) throws SystemException {
		
		PartidoLocalServiceUtil.add(getFechaPartido(), 
				getLugar(), 
				getCategoriaDisciplina(), 
				createUser);
		
	}

}
